﻿using System;
using System.Collections.Generic;
using System.Text;

namespace iri10
{
    class NegPedido
    {
        static List<Pedido> lstPedido = new List<Pedido>();

        public static Boolean inicializar()
        {
            lstPedido.Clear();
            lstPedido.AddRange(getPedidos());
            return true;
        }

        public static uint getProximoNumeroPedido()
        {
            uint max = 0;
            foreach (Pedido p in lstPedido)
            {
                if (p.Id > max)
                    max = p.Id;
            }
            return (uint)max+1;
        }

        public static Pedido[] getPedidos()
        {
            String sConsulta = "SELECT * FROM `pedido`;";

            Object[] resp = BaseDatos.Consultar(sConsulta);

            Pedido[] ret = new Pedido[resp.GetUpperBound(0) + 1];

            //Cargo los pedidos
            for (int iCont = 0; iCont <= resp.GetUpperBound(0); iCont++)
            {
                ret[iCont] = new Pedido((Object[])resp[iCont]);

            }

            return ret;

        }

        public static Boolean almacenarPedido(Pedido p)
        {
            //Almaceno la computadora
            NegComputadora.almacenarComputadora(p.Pc);


            //Almaceno el pedido
            String sConsulta = "INSERT INTO pedido (Usuario,Pc,Nombre,Apellido,Ciudad,Provincia,Pais,CP,Calle,Numero,Piso,Departamento,DNI,formaPago,fecha,telefono) VALUES (";

            sConsulta += 
                p.User.Id + "," +
                p.Pc.ID + ",'" +
                p.SNombre + "','" +
                p.SApellido + "','" +
                p.Direccion.Ciudad + "','" +
                p.Direccion.Provincia + "','" +
                p.Direccion.País + "'," +
                p.Direccion.CP + ",'" +
                p.Direccion.Calle + "'," +
                p.Direccion.Número + ",'" +
                p.Direccion.Piso +  "','" +
                p.Direccion.Departamento + "','" +
                p.sDNI + "','" +
                p.FormaDePago + "','" +
                p.Fecha.ToString("yyyy-MM-dd HH:mm") + "','" +
                p.STelefono + "');"
            ;
            
            //Y Finalmente almacenamos el pedido
            BaseDatos.ConsultarSimple(sConsulta);

            //Inicializamos nuevamente, para tener todo cargado
            inicializar();

            return true;

        }

        public static Pedido getPedido(uint id)
        {
            //Busco un pedido cuya id sea 'id'
            Pedido result = lstPedido.Find(
            delegate(Pedido pd)
            {
                return pd.Id == id;
            }
            );

            return result;
        }
    
    }
}
